A software provider can sell a number of different software and/or service products. As used throughout this disclosure, the term “software” refers to computer readable instructions and other operating information used by a computing system or processing device. For example, a software provider can sell product subscriptions to customers for the software and service products. An entity that has purchased a subscription to a product is an owner of the product subscription. An owner's use of a product subscription can be represented, for example, as an “entitlement.” For example, a customer, such as ACME Company, purchases ten 3-year product subscriptions to Enterprise Software ABC and thus, ACME Company is an owner of the ten product subscriptions. Ten entitlements represent the ten product subscriptions. An owner can then assign the ten entitlements, for example, to various systems. When the owner installs the Enterprise Software ABC on a computing system, the computing system is granted one of the ten entitlements.
Once a computing system has been granted an entitlement, the computing system is registered and subscribed to receive software content from the software provider for the duration of the product subscription. For example, a computing system granted an entitlement by ACME Company receives software content from Enterprise Software ABC for 3 years if ACME Company purchased ten 3-year product subscriptions to Enterprise Software ABC. Once the product subscription expires, the entitlement also expires and will no longer be valid, and the computing system will no longer receive software content from the software provider. A user of the computing system will no longer be able to use the software or service once the entitlement has expired, and a break in coverage may be experienced.
Software providers can sell product subscriptions based on product business models. For example, the product business model for Enterprise Software ABC may be to sell product subscriptions to the Enterprise Software ABC on a per-CPU-socket-pair basis. Each of ACME Company's ten entitlements are valid for systems that each have two populated CPU sockets. Thus, ACME Company should assign two entitlements to a system that has four populated CPU sockets. For this example, a compliant system would have the correct number of product, subscriptions in view of the number of entitlements and CPU sockets on the system.
Typically, the enforcement of a software provider's product business model for a particular product is hard-coded in the product source code itself. For example, the product source code for Enterprise Software ABC is hard-coded to enforce the entitlements for the Enterprise Software ABC on a “per-CPU-socket-pair” basis.
Conventional solutions can require a system administrator to determine which computing systems have entitlements. The system administrator should then manually select product subscriptions (if available) to use to grant an entitlement for each computing system with an expired entitlement. Once a product subscription has been selected by the system administrator, it can be used as an entitlement for the computing system in order to provide access to the software for the computing system. Using this manual process, a break in coverage can be experienced by a user of the computing system while the system administrator obtains a new entitlement for the computing system. Moreover, having a system administrator manually select product subscriptions may be feasible when there are a small number of computing systems. However, the manual selection can be difficult when there are a large number of product subscriptions with varying attributes and with different fulfillment requirements. As the number of available product subscriptions increases, the complexity of the selection increases exponentially to the extent that the time needed to determine and select the appropriate product subscriptions to attach to a computer system grows by a factor of 2n, which increases the time required to produce a set of product subscriptions for a client computer system.